/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package blocagemcorreio;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Calebe
 */
public class Conexao {

    public String driver = "com.mysql.jdbc.Driver";
    public String url = "jdbc:mysql://10.1.1.251:3306/classic_show";
    public String usuario = "calebe";
    public String senha = "54321";
    public Connection conexao;
    public PreparedStatement preparedStatement;
    public ResultSet resultset;
    public static String etiqueta_imprimir;

    //fazer conexao com o banco
    public void conecta() {

        try {
            Class.forName(driver);
            conexao = DriverManager.getConnection(url, usuario, senha);
        } catch (ClassNotFoundException Driver) {
            JOptionPane.showMessageDialog(null, "Driver do banco não localizado" + Driver);
        } catch (SQLException SQL) {
            JOptionPane.showMessageDialog(null, "Erro de SQL " + SQL);
        }
    }

    /**
     * Função para listar os CPD`s dos Correios
     * @return retorna uma lista com todos os CPD`s cadastrados no banco
     */
    public List listarCPDBlocagem() {

        conecta();
        //Contrução do List para retornar os CPD`s
        List listaBlocagem = new ArrayList();
        try {
            preparedStatement = conexao.prepareStatement("Select * from blocagem order by cep_inicio", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            resultset = preparedStatement.executeQuery();

            while (resultset.next()) {
                HashMap hasmapCPD = new HashMap();
                hasmapCPD.put("nome", resultset.getString("nome"));
                hasmapCPD.put("cep_inicio", resultset.getString("cep_inicio"));
                hasmapCPD.put("cep_final", resultset.getString("cep_final"));
                listaBlocagem.add(hasmapCPD);
            }
        } catch (SQLException SQL) {
            JOptionPane.showMessageDialog(null, "Erro de SQL " + SQL);
        }
        return listaBlocagem;
    }

    /**
     * Função para listar os assinantes a ser enviada a assinatura
     * @param parametro recebe a edição a ser enviada como parametro de pesquisa
     * @return a lista completa de assinantes ativos para a edição pesquisada
     */
    public List listarAssinantesEtiquetas(String parametro) {

        conecta();
        //Contrução do List para retornar os CPD`s
        List listaAssinantes = new ArrayList();
        Integer edicao = Integer.parseInt(parametro);
        try {
            preparedStatement = conexao.prepareStatement("Select * from assinantes where forma_de_envio = 1 and classic_final >= " + edicao + " order by ass_cep", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            resultset = preparedStatement.executeQuery();

            while (resultset.next()) {
                HashMap hashmap_pessoas = new HashMap();
                hashmap_pessoas.put("ass_codigo", resultset.getString("ass_codigo"));
                hashmap_pessoas.put("ass_nome_assinante", resultset.getString("ass_nome_assinante"));                
                hashmap_pessoas.put("ass_logradouro", resultset.getString("ass_logradouro"));
                hashmap_pessoas.put("ass_tipo_logradouro", resultset.getString("ass_tipo_logradouro"));
                hashmap_pessoas.put("ass_numero", resultset.getString("ass_numero"));
                hashmap_pessoas.put("ass_complemento", resultset.getString("ass_complemento"));
                hashmap_pessoas.put("ass_bairro", resultset.getString("ass_bairro"));
                hashmap_pessoas.put("ass_cidade", resultset.getString("ass_cidade"));
                hashmap_pessoas.put("ass_estado", resultset.getString("ass_estado"));
                hashmap_pessoas.put("ass_cep", resultset.getString("ass_cep"));
                hashmap_pessoas.put("forma_de_envio", resultset.getString("forma_de_envio"));                                
                listaAssinantes.add(hashmap_pessoas);
            }
        } catch (SQLException SQL) {
            JOptionPane.showMessageDialog(null, "Erro de SQL " + SQL);
        }
        return listaAssinantes;
    }
}
